package locadora.aplicacao;

import locadora.negocio.pessoas.*;

public class TelaOpcoes extends Tela {

	public TelaOpcoes() {
		super("Opções do sistema");
	}
	
	protected void imprimirTela(Gerente root) {
		if(!validarAcesso(root)) return;
		while(true) {
			int opcao = -1;
			while(opcao < 0 || opcao > 2) {
				this.limpar();
				this.imprimirMensagem(this.titulo);
				this.imprimirMensagem("");
				this.imprimirMensagem("(1) Clientes");
				this.imprimirMensagem("(2) Títulos");
				this.imprimirMensagem("");
				this.imprimirMensagem("(0) Voltar");
				this.imprimirMensagem("");
				this.requisitarEntrada("Por favor, escolha uma opção.");
				try { opcao = Integer.parseInt(this.lerEntrada()); }
				catch(Exception e) { this.imprimirErro("Opção inválida!"); }
			}
			this.limpar();
			switch(opcao) {
				case 1: this.menuClientes(); break;
				case 2: this.menuTitulos(); break;
				case 0: return;
			}
		}
	}

	private boolean validarAcesso(Gerente root) {
		this.limpar();
		this.requisitarEntrada("Por favor, entre com seu CPF.");
		String CPF = this.lerEntrada();
		try{ this.usuario = root.buscar(CPF); }
		catch(Exception e) { this.imprimirErro(e.getMessage()); return false; }
		if(this.usuario instanceof Funcionario || this.usuario instanceof Gerente) return true;
		else { this.imprimirErro("Usuário não autorizado!"); return false; }
	}
	
	private void menuClientes() {
		TelaCliente tela = new TelaCliente(this.usuario);
		tela.imprimirTela();
	}
	
	private void menuTitulos() {
		TelaTitulo tela = new TelaTitulo(this.usuario);
		tela.imprimirTela();
	}
}


